/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Vista;

import Controlador.GestorConstrucciones;
import Controlador.Recursos;
import Modelo.*;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
 *
 * @author Carlos
 */
public class Applet extends javax.swing.JApplet{
    private BufferedImage db;
    private Graphics g2d;
    private Mensaje mensaje;
    private boolean Emouse;
    private boolean Eteclado;
    private int xx,yy;
    private Timer timer;
    private int tiempo;
    //private Mapa mapa;
    private String etiqueta="";
    public static boolean inicio;
    public static boolean salida;
    public static Image imageninicio;
    public static Image imagensalida;
    java.awt.event.KeyEvent eventoteclado;
    java.awt.event.MouseEvent eventomouse;

    public void init(){
        Emouse=false;
        Eteclado=false;
        inicio=true;
        salida=false;
        timer= new Timer(1000,new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {

                tiempo += 1;
                repaint();
                if(tiempo ==5) inicio=false;
                if (tiempo % 5 == 0)
                { Juego.turno++;  }

                if(tiempo<60) {
                    etiqueta="00:";
                    if(tiempo<10)
                        etiqueta = etiqueta+"0"+tiempo;
                    else
                        etiqueta = etiqueta+tiempo;
                }
                else{
                    int minutos = tiempo / 60;
                    int segundos = tiempo %60;
                    if(minutos<10){
                        etiqueta = "0"+minutos+":";
                        if(segundos<10)
                            etiqueta = etiqueta+"0"+segundos;
                        else
                            etiqueta = etiqueta+segundos;
                    }
                }
            }
        });
        timer.start();

        db = new BufferedImage(1200,800,BufferedImage.TYPE_INT_RGB);
        try{
            java.awt.EventQueue.invokeAndWait(new Runnable(){
                public void run(){
                    start();
                }
            });
        }
        catch(Exception e){}
        Terreno.inicializar(this);

        //i=getImage(getCodeBase(),"Mithril Hammer.png");

        g2d=db.getGraphics();
        Grafico.iniciar(this, g2d);
        
        mensaje=new Mensaje();
        setBackground(Color.white);
         imageninicio= getImage(getCodeBase(),"Imagenes\\bienvenido.png");
         imagensalida= getImage(getCodeBase(),"Imagenes\\gameover.png");
    }
    @Override
    public void start(){
        addMouseMotionListener(
			new MouseMotionAdapter(){
				public void mouseMoved(MouseEvent evento){
					movimientomouse(evento);
				}
			}
        );
        addMouseListener(new java.awt.event.MouseAdapter() {
            @Override
            public void mouseClicked(java.awt.event.MouseEvent evt){
                mouse(evt);
            }
        });
        addKeyListener(new java.awt.event.KeyAdapter() {
            @Override
            public void keyPressed(java.awt.event.KeyEvent key){
                teclado(key);
            }
        });
    }
    public void movimientomouse(java.awt.event.MouseEvent evento){
        //repaint();
        //g2d.drawString("mouse",800,280);
        xx=evento.getX();
        yy=evento.getY();
        repaint();
    }
    public void mouse(java.awt.event.MouseEvent evt){
        int m=evt.getButton();
        Emouse=true;
        Point pos=new Point(evt.getX(),evt.getY());
        eventomouse=evt;
        repaint();
    }
    public void teclado(java.awt.event.KeyEvent key){
        eventoteclado=key;
        Eteclado=true;
        repaint();
    }
    @Override
    public void paint(Graphics g){
        //g2d.clearRect(0, 0, 1200,800);
        if(inicio){
            g.drawImage(imageninicio, 0,0,1000,600,this);
            
        }
        //mensaje.abajo();
        //Grafico.g.drawString(etiqueta, 530, 20);
        else if(salida){
            g.drawImage(imagensalida, 0,0,1000,600,this);
        }
        else{
            //Datos.mostrar(etiqueta);
            if(Emouse==true){
                Emouse=false;
                mensaje.mouse(eventomouse);
            }
            if(Eteclado==true){
                Eteclado=false;
                mensaje.setEstado(eventoteclado);
            }
            g2d.setColor(Color.red);
            g2d.drawLine(0, 500,1000,500);
            mensaje.movimiento(new Point(xx,yy));
            //g2d.drawString("mouse"+xx+" "+yy,800,280);
            //g2d.drawString("INICIO",0,530);
            mensaje.cabecera();
            g.drawImage(db, 0,0, this);
        }
    }
}